1 module features.java_jdk; 2 public import feature; 3 import commons; 4 import hconfigs; 5 6 enum JDKVersion = "17.0.12"; 7 8 Feature JavaJDKFeature; 9 10 static if(isARM) 11 string arch = "aarch64"; 12 else 13 string arch = "x64"; 14 15 16 private bool installOpenJDK(ref Terminal t, ref RealTimeConsoleInput input, TargetVersion ver, Download[] downloads) 17 { 18 string installationOutput = buildNormalizedPath(std.file.getcwd(), "Android", "openjdk_17"); 19 if(!extractToFolder(downloads[0].getOutputPath(ver), installationOutput, t, input)) 20 { 21 t.writelnError("Could not extract to folder ", installationOutput); 22 return false; 23 } 24 25 string javaHome = buildNormalizedPath(installationOutput, std.file.dirEntries(installationOutput, std.file.SpanMode.shallow).front.name);// = environment["JAVA_HOME"]; 26 version(OSX) 27 javaHome = buildNormalizedPath(javaHome, "Contents", "Home"); 28 29 if(!std.file.exists(javaHome)) 30 { 31 t.writelnError("Expected JAVA_HOME at automatic installation does not exists:" ~ javaHome); 32 return false; 33 } 34 configs["javaHome"] = javaHome; 35 updateConfigFile(); 36 return true; 37 } 38 39 void initialize() 40 { 41 JavaJDKFeature = Feature("Java JDK", 42 "Java Development Kit. Required for compiling Java code and running gradle", 43 ExistenceChecker(["javaHome"], ["JAVA_HOME"]), 44 Installation([Download( 45 DownloadURL( 46 windows:"https://aka.ms/download-jdk/microsoft-jdk-$VERSION-windows-"~arch~".zip", 47 linux: "https://aka.ms/download-jdk/microsoft-jdk-$VERSION-linux-"~arch~".tar.gz", 48 osx: "https://aka.ms/download-jdk/microsoft-jdk-$VERSION-macos-"~arch~".tar.gz" 49 )) 50 ], toDelegate(&installOpenJDK)), 51 (ref Terminal t, string where){environment["JAVA_HOME"] = where;}, 52 VersionRange.parse(JDKVersion) 53 ); 54 55 } 56 void start(){}